<?php

/**
 * objetivos actions.
 *
 * @package    SistemaWebUnlSenescyt
 * @subpackage objetivos
 * @author     JFernando
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class objetivosActions extends sfActions {

    protected $idp;

    
    
    public function executeGraba(sfWebRequest $request) {        
        if (isset($_POST['id'])&&isset($_POST['firstname'])) {
            $id = mysql_escape_String($_POST['id']);
            $firstname = mysql_escape_String($_POST['firstname']);
            
            $q = Doctrine_Query::create()
                    ->from('objetivo o')
                    ->where('o.id_ob = ?', $id);
            $ob = $q->fetchOne();
            $ob->setNombre($firstname);            
            $ob->save();           
            
            
        }
    }
    
    public function executeIndex(sfWebRequest $request) {
        $this->idp = $request->getParameter('id_pro');
        $this->getUser()->setAttribute('id_pro', $this->idp);
        $this->objetivos = Doctrine::getTable('objetivo')->createQuery('o')
                ->where('o.id_pro = ?', $this->idp)
                ->execute();
        
        $q = Doctrine_Query::create()
                ->from('proyecto p')
                ->where('p.id_pro=?', $this->idp);
        $this->proyecto = $q->fetchOne();
    }

    public function executeShow(sfWebRequest $request) {
        $this->objetivo = Doctrine_Core::getTable('objetivo')->find(array($request->getParameter('id_ob')));
        $this->forward404Unless($this->objetivo);
    }

    public function executeNew(sfWebRequest $request) {
        $this->form = new objetivoForm();
    }

    public function executeCreate(sfWebRequest $request) {
        $this->forward404Unless($request->isMethod(sfRequest::POST));

        $this->form = new objetivoForm();

        $this->processForm($request, $this->form);

        $this->setTemplate('new');
    }

    public function executeEdit(sfWebRequest $request) {
        $this->forward404Unless($objetivo = Doctrine_Core::getTable('objetivo')->find(array($request->getParameter('id_ob'))), sprintf('Object objetivo does not exist (%s).', $request->getParameter('id_ob')));
        $this->form = new objetivoForm($objetivo);
    }

    public function executeUpdate(sfWebRequest $request) {
        $this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
        $this->forward404Unless($objetivo = Doctrine_Core::getTable('objetivo')->find(array($request->getParameter('id_ob'))), sprintf('Object objetivo does not exist (%s).', $request->getParameter('id_ob')));
        $this->form = new objetivoForm($objetivo);
        $this->processForm($request, $this->form);
        $this->setTemplate('edit');
    }

    public function executeDelete(sfWebRequest $request) {
        $request->checkCSRFProtection();

        $this->forward404Unless($objetivo = Doctrine_Core::getTable('objetivo')->find(array($request->getParameter('id_ob'))), sprintf('Object objetivo does not exist (%s).', $request->getParameter('id_ob')));
        $objetivo->delete();
        $this->getUser()->setFlash('notice', 'Objetivo Borrado Correctamente!');
        $this->redirect('objetivos/index?id_pro=' . $this->getUser()->getAttribute('id_pro'));
    }

    protected function processForm(sfWebRequest $request, sfForm $form) {
        $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
        if ($form->isValid()) {

            $this->idp = $this->getUser()->getAttribute('id_pro');
            $q = Doctrine_Query::create()
                    ->from('proyecto p')
                    ->where('p.id_pro=?', $this->idp);
            $proyecto = $q->fetchOne();


            $form->getObject()->setIdPro($this->idp);
            $form->getObject()->setProyectos($proyecto);
            $objetivo = $form->save();


            $fi = explode("-", $objetivo->getPeriodos()->getFechai());
            $ff = explode("-", $objetivo->getPeriodos()->getFechaf());
            $ai = $fi[0];
            $mi = $fi[1];
            $af = $ff[0];
            $mf = $ff[1];
            if ($ai == $af) {
                if ($mi <= $mf) {
                    $resul = 1;
                } else {
                    $resul = 0;
                }
            } else {

                if ($ai < $af) {
                    $resul = 1;
                } else {
                    $resul = 0;
                }
            }

            if ($resul == 1) {

                $fip = explode("-", $proyecto->getPeriodos()->getFechai());
                $ffp = explode("-", $proyecto->getPeriodos()->getFechaf());
                $aip = $fip[0];
                $mip = $fip[1];
                $afp = $ffp[0];
                $mfp = $ffp[1];

                if ($ai == $aip) {
                    if ($mi >= $mip) {
                        if ($af == $afp) {
                            if ($mfp >= $mf) {
                                $this->getUser()->setFlash('notice', 'Objetivo Guardado Correctamente!');
                                $this->redirect('objetivos/index?id_pro=' . $this->getUser()->getAttribute('id_pro'));
                            } else {
                                $objetivo->delete();
                                $this->getUser()->setFlash('error', sprintf('El rango del Objetivo no esta dentro del rango del Proyecto! %s-%s %s-%s',$mip,$aip,$mfp,$afp));
                                $this->redirect('objetivos/new');
                            }
                        } else {
                            if ($af < $afp) {
                                $this->getUser()->setFlash('notice', 'Objetivo Guardado Correctamente!');
                                $this->redirect('objetivos/index?id_pro=' . $this->getUser()->getAttribute('id_pro'));
                            } else {
                                $objetivo->delete();
                                $this->getUser()->setFlash('error', sprintf('El rango del Objetivo no esta dentro del rango del Proyecto! %s-%s %s-%s',$mip,$aip,$mfp,$afp));
                                $this->redirect('objetivos/new');
                            }
                        }
                    } else {
                        $objetivo->delete();
                        $this->getUser()->setFlash('error', sprintf('El rango del Objetivo no esta dentro del rango del Proyecto! %s-%s %s-%s',$mip,$aip,$mfp,$afp));
                        $this->redirect('objetivos/new');
                    }
                } else {
                    if ($ai > $aip) {
                        if ($af == $afp) {
                            if ($mfp >= $mf) {
                                $this->getUser()->setFlash('notice', 'Objetivo Guardado Correctamente!');
                                $this->redirect('objetivos/index?id_pro=' . $this->getUser()->getAttribute('id_pro'));
                            } else {
                                $objetivo->delete();
                                $this->getUser()->setFlash('error', sprintf('El rango del Objetivo no esta dentro del rango del Proyecto! %s-%s %s-%s',$mip,$aip,$mfp,$afp));
                                $this->redirect('objetivos/new');
                            }
                        } else {
                            if ($af < $afp) {
                                $this->getUser()->setFlash('notice', 'Objetivo Guardado Correctamente!');
                                $this->redirect('objetivos/index?id_pro=' . $this->getUser()->getAttribute('id_pro'));
                            } else {
                                $objetivo->delete();
                                $this->getUser()->setFlash('error', sprintf('El rango del Objetivo no esta dentro del rango del Proyecto! %s-%s  %s-%s',$mip,$aip,$mfp,$afp));
                                $this->redirect('objetivos/new');
                            }
                        }
                    } else {
                        $objetivo->delete();
                        $this->getUser()->setFlash('error', sprintf('El rango del Objetivo no esta dentro del rango del Proyecto! %s-%s  %s-%s',$mip,$aip,$mfp,$afp));
                        $this->redirect('objetivos/new');
                    }
                }
            } else {
                $objetivo->delete();
                $this->getUser()->setFlash('error', 'El rango del Objetivo es menor a 1 mes!');
                $this->redirect('objetivos/new');
            }
        }
    }

}
